{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[9.2755e-39, 1.0837e-38, 8.4490e-39],\n",
      "        [9.0919e-39, 9.9184e-39, 9.0000e-39],\n",
      "        [1.0286e-38, 1.0653e-38, 1.0194e-38],\n",
      "        [4.6838e-39, 4.9592e-39, 9.9184e-39],\n",
      "        [9.0000e-39, 1.0561e-38, 1.0653e-38]]) <class 'torch.Tensor'> torch.float32\n"
     ]
    }
   ],
   "source": [
    "# 未初始化的Tensor\n",
    "x = torch.empty(5, 3)\n",
    "print(x, type(x), x.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0.2135, 0.1849, 0.0023],\n",
      "        [0.9849, 0.5986, 0.0795],\n",
      "        [0.8986, 0.5394, 0.4825],\n",
      "        [0.6146, 0.0323, 0.0921],\n",
      "        [0.3708, 0.5988, 0.8908]]) <class 'torch.Tensor'> torch.float32\n"
     ]
    }
   ],
   "source": [
    "# 随机初始化的Tensor\n",
    "x = torch.rand(5, 3)\n",
    "print(x, type(x), x.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0, 0, 0],\n",
      "        [0, 0, 0],\n",
      "        [0, 0, 0],\n",
      "        [0, 0, 0],\n",
      "        [0, 0, 0]]) <class 'torch.Tensor'> torch.int64\n"
     ]
    }
   ],
   "source": [
    "# 创建long型全0的Tensor\n",
    "x = torch.zeros(5, 3, dtype=torch.long)\n",
    "print(x, type(x), x.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([5.2000, 3.0000, 2.0000, 1.0000, 0.0000]) <class 'torch.Tensor'> torch.float32\n"
     ]
    }
   ],
   "source": [
    "# 直接根据数据创建Tensor\n",
    "x = torch.tensor([5.2, 3, 2, 1, 0])\n",
    "print(x, type(x), x.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1., 1., 1.],\n",
      "        [1., 1., 1.],\n",
      "        [1., 1., 1.],\n",
      "        [1., 1., 1.],\n",
      "        [1., 1., 1.]], dtype=torch.float64) <class 'torch.Tensor'> torch.float64\n",
      "tensor([[ 0.9518, -0.7086, -0.6465],\n",
      "        [-0.2475,  1.5087, -1.2843],\n",
      "        [-0.7007, -1.8407, -1.2777],\n",
      "        [-0.3010,  0.4419, -1.8190],\n",
      "        [-0.8673,  0.8412, -1.3804]]) <class 'torch.Tensor'> torch.float32\n"
     ]
    }
   ],
   "source": [
    "# 通过现有的Tensor创建Tensor\n",
    "\n",
    "# 返回的tensor默认具有相同的torch.dtype和torch.device\n",
    "x = x.new_ones(5, 3, dtype=torch.float64)\n",
    "print(x, type(x), x.dtype)\n",
    "\n",
    "# 指定新的数据类型\n",
    "x = torch.randn_like(x, dtype=torch.float)\n",
    "print(x, type(x), x.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([5, 3]) <class 'torch.Size'>\n",
      "torch.Size([5, 3]) <class 'torch.Size'>\n",
      "True\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "# 可以通过shape或者size()来获取Tensor的形状\n",
    "size = x.size()\n",
    "shape = x.shape\n",
    "print(size, type(size))\n",
    "print(shape, type(shape))\n",
    "print(isinstance(size,tuple))\n",
    "print(isinstance(shape,tuple))"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "还有很多函数可以创建Tensor，去翻翻官方API就知道了，下表给了一些常用的作参考。\n",
    "![image.png](attachment:image.png)\n",
    "这些创建方法都可以在创建的时候指定数据类型dtype和存放device(cpu/gpu)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 1.2432, -0.0229, -0.4115],\n",
      "        [ 0.6755,  2.4714, -0.9986],\n",
      "        [-0.2649, -1.7689, -1.1178],\n",
      "        [ 0.1133,  1.3081, -1.7513],\n",
      "        [-0.4059,  1.7413, -0.7181]])\n",
      "tensor([[ 1.2432, -0.0229, -0.4115],\n",
      "        [ 0.6755,  2.4714, -0.9986],\n",
      "        [-0.2649, -1.7689, -1.1178],\n",
      "        [ 0.1133,  1.3081, -1.7513],\n",
      "        [-0.4059,  1.7413, -0.7181]])\n"
     ]
    }
   ],
   "source": [
    "# 算术操作\n",
    "y = torch.rand(5, 3)\n",
    "print(x+y)\n",
    "print(torch.add(x,y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 1.2432, -0.0229, -0.4115],\n",
      "        [ 0.6755,  2.4714, -0.9986],\n",
      "        [-0.2649, -1.7689, -1.1178],\n",
      "        [ 0.1133,  1.3081, -1.7513],\n",
      "        [-0.4059,  1.7413, -0.7181]])\n"
     ]
    }
   ],
   "source": [
    "# 可以指定输出\n",
    "result = torch.empty(5, 3)\n",
    "torch.add(x, y, out=result)\n",
    "print(result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 1.2432, -0.0229, -0.4115],\n",
      "        [ 0.6755,  2.4714, -0.9986],\n",
      "        [-0.2649, -1.7689, -1.1178],\n",
      "        [ 0.1133,  1.3081, -1.7513],\n",
      "        [-0.4059,  1.7413, -0.7181]])\n"
     ]
    }
   ],
   "source": [
    "# 使用inplace形式\n",
    "# PyTorch操作inplace版本都有后缀_, 例如x.copy_(y), x.t_()\n",
    "y.add_(x)\n",
    "print(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([0.2176, 0.2925, 0.8220]) tensor([0.2176, 0.2925, 0.8220])\n",
      "tensor([1.2176, 1.2925, 1.8220])\n",
      "tensor([1.2176, 1.2925, 1.8220])\n"
     ]
    }
   ],
   "source": [
    "# 索引\n",
    "# 索引出来的结果与原数据共享内存，也即修改一个，另一个会跟着修改\n",
    "x = torch.rand(5, 3)\n",
    "y = x[0, :]\n",
    "print(x[0,:], y)\n",
    "y += 1\n",
    "print(x[0,:]) # x也被修改了\n",
    "y = y + 1\n",
    "print(x[0, :]) # x没有被修改"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "除了常用的索引选择数据之外，PyTorch还提供了一些高级的选择函数:\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([5, 3]) torch.Size([15]) torch.Size([3, 5])\n"
     ]
    }
   ],
   "source": [
    "# 改变形状\n",
    "y = x.view(15)\n",
    "z = x.view(-1, 5) # -1所指的维度可以根据其他维度的值推出来\n",
    "print(x.size(), y.size(), z.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([2, 3]) tensor([ 6, 10])\n",
      "tensor([3, 4]) tensor([ 6, 10])\n"
     ]
    }
   ],
   "source": [
    "# view仅仅是改变了对这个张量的观察角度，内部数据并未改变\n",
    "# view()返回的新Tensor与源Tensor虽然可能有不同的size，但是是共享data的，\n",
    "# 也即更改其中的一个，另外一个也会跟着改变\n",
    "\n",
    "x += 1\n",
    "print(x, y)\n",
    "x = x + 1 # 但如果是这样操作，y不会被改变\n",
    "print(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3049513382104 3049521248296 False\n"
     ]
    }
   ],
   "source": [
    "# 虽然view返回的Tensor与源Tensor是共享data的，但是依然是一个新的Tensor\n",
    "# 因为Tensor除了包含data外还有一些其他属性，二者id（内存地址）并不一致\n",
    "\n",
    "y = x.view(15)\n",
    "print(id(x), id(y), id(x)==id(y))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[2.9788, 2.5704, 2.8710],\n",
      "        [1.6009, 1.1525, 1.2503],\n",
      "        [1.8260, 1.3153, 1.6089],\n",
      "        [1.6168, 1.0876, 1.8874],\n",
      "        [1.1850, 1.8735, 1.3481]])\n",
      "tensor([3.9788, 3.5704, 3.8710, 2.6009, 2.1525, 2.2503, 2.8260, 2.3153, 2.6089,\n",
      "        2.6168, 2.0876, 2.8874, 2.1850, 2.8735, 2.3481])\n"
     ]
    }
   ],
   "source": [
    "# 返回一个真正新的副本（即不共享data内存）\n",
    "# reshape()可以改变形状，但是此函数并不能保证返回的是其拷贝\n",
    "# 推荐先用clone创造一个副本然后再使用view\n",
    "x_cp = x.clone().view(15)\n",
    "x -= 1\n",
    "print(x)\n",
    "print(x_cp)\n",
    "# 使用clone还有一个好处是会被记录在计算图中，即梯度回传到副本时也会传到源Tensor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([-0.3737]) <class 'torch.Tensor'>\n",
      "-0.37372955679893494 <class 'float'>\n"
     ]
    }
   ],
   "source": [
    "# 将变量Tensor转换成python中的number\n",
    "x = torch.randn(1)\n",
    "print(x, type(x))\n",
    "print(x.item(), type(x.item()))"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线性代数，PyTorch还支持一些线性函数\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1, 2]])\n",
      "tensor([[1],\n",
      "        [2],\n",
      "        [3]])\n",
      "tensor([[2, 3],\n",
      "        [3, 4],\n",
      "        [4, 5]])\n"
     ]
    }
   ],
   "source": [
    "# 广播机制\n",
    "# 当对两个形状不同的Tensor按元素运算时，可能会触发广播（broadcasting）机制\n",
    "# 先适当复制元素使这两个Tensor形状相同后再按元素运算\n",
    "x = torch.arange(1, 3).view(1, 2)\n",
    "print(x)\n",
    "y = torch.arange(1, 4).view(3, 1)\n",
    "print(y)\n",
    "print(x+y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3049519402296 3049519399848 False\n",
      "3049519399848 3049519399848 True\n"
     ]
    }
   ],
   "source": [
    "# 运算的内存开销\n",
    "# 索引操作是不会开辟新内存的，而像y = x + y这样的运算是会新开内存的，然后将y指向新内存\n",
    "x = torch.tensor([1, 2])\n",
    "y = torch.tensor([3, 4])\n",
    "id_before = id(y)\n",
    "y = y + x # 会开辟新内存\n",
    "print(id_before, id(y), id(y)==id_before)\n",
    "id_before = id(y)\n",
    "y += x # 不会开辟新内存\n",
    "print(id_before, id(y), id(y)==id_before)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'torch.Tensor'>\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "# 如果想指定结果到原来的y的内存，可以使用索引来进行替换操作。\n",
    "x = torch.tensor([1, 2])\n",
    "y = torch.tensor([3, 4])\n",
    "id_before = id(y)\n",
    "print(type(y[:]))\n",
    "y[:] = y + x # 把x + y的结果通过[:]写进y对应的内存中。\n",
    "print(id(y) == id_before)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "# 还可以使用运算符全名函数中的out参数或者自加运算符+=(也即add_())达到上述效果\n",
    "x = torch.tensor([1, 2])\n",
    "y = torch.tensor([3, 4])\n",
    "id_before = id(y)\n",
    "torch.add(x, y, out=y)\n",
    "print(id(y) == id_before)\n",
    "\n",
    "id_before = id(y)\n",
    "y += x\n",
    "print(id(y) == id_before)\n",
    "\n",
    "id_before = id(y)\n",
    "y.add_(x)\n",
    "print(id(y) == id_before)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'torch.Tensor'> <class 'numpy.ndarray'>\n",
      "tensor([1., 1., 1., 1., 1.]) [1. 1. 1. 1. 1.]\n",
      "tensor([2., 2., 2., 2., 2.]) [2. 2. 2. 2. 2.]\n",
      "tensor([3., 3., 3., 3., 3.]) [3. 3. 3. 3. 3.]\n",
      "tensor([4., 4., 4., 4., 4.]) [3. 3. 3. 3. 3.]\n",
      "tensor([4., 4., 4., 4., 4.]) [4. 4. 4. 4. 4.]\n"
     ]
    }
   ],
   "source": [
    "# Tensor 和 NumPy 相互转换\n",
    "# numpy()和from_numpy()转换后共享内存，所以他们之间的转换很快\n",
    "# torch.tensor() 将Numpy中的array转换成Tensor会进行数据的拷贝，消耗更多的时间和空间\n",
    "# 所有在CPU上的Tensor（除了CharTensor）都支持与NumPy数组相互转换\n",
    "\n",
    "# Tensor转Numpy数组\n",
    "a = torch.ones(5)\n",
    "b = a.numpy()\n",
    "print(type(a), type(b))\n",
    "print(a, b)\n",
    "\n",
    "a += 1\n",
    "print(a, b)\n",
    "b += 1\n",
    "print(a, b)\n",
    "a = a + 1\n",
    "print(a, b)\n",
    "b = b + 1\n",
    "print(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'numpy.ndarray'> <class 'torch.Tensor'>\n",
      "[1. 1. 1. 1. 1.] tensor([1., 1., 1., 1., 1.], dtype=torch.float64)\n",
      "[2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtype=torch.float64)\n",
      "[3. 3. 3. 3. 3.] tensor([3., 3., 3., 3., 3.], dtype=torch.float64)\n",
      "[4. 4. 4. 4. 4.] tensor([3., 3., 3., 3., 3.], dtype=torch.float64)\n",
      "[4. 4. 4. 4. 4.] tensor([4., 4., 4., 4., 4.], dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "# Numpy数组转Tensor\n",
    "import numpy as np\n",
    "a = np.ones(5)\n",
    "b = torch.from_numpy(a)\n",
    "print(type(a), type(b))\n",
    "print(a, b)\n",
    "\n",
    "a += 1\n",
    "print(a, b)\n",
    "b += 1\n",
    "print(a, b)\n",
    "a = a + 1\n",
    "print(a, b)\n",
    "b = b + 1\n",
    "print(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'numpy.ndarray'> <class 'torch.Tensor'>\n",
      "[4. 4. 4. 4. 4.] tensor([4., 4., 4., 4., 4.], dtype=torch.float64)\n",
      "[5. 5. 5. 5. 5.] tensor([4., 4., 4., 4., 4.], dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "# 直接用torch.tensor()将NumPy数组转换成Tensor\n",
    "c = torch.tensor(a)\n",
    "print(type(a), type(c))\n",
    "print(a, c)\n",
    "a += 1\n",
    "print(a, c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([2, 3], device='cuda:0')\n",
      "tensor([2., 3.], dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "# Tensor在 CPU 和 GPU 之间相互移动，但是需要GPU硬件的支持\n",
    "if torch.cuda.is_available():\n",
    "    device = torch.device(\"cuda\")          # GPU\n",
    "    y = torch.ones_like(x, device=device)  # 直接创建一个在GPU上的Tensor\n",
    "    x = x.to(device)                       # 等价于 .to(\"cuda\")\n",
    "    z = x + y\n",
    "    print(z)\n",
    "    print(z.to(\"cpu\", dtype=torch.double))       # to()还可以同时更改数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "yczlab_3.6",
   "language": "python",
   "name": "yczlab_python3.6"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
